package com.mrzhou.web.props;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Map;

@ConfigurationProperties(prefix = "spring.http-client.pool")
@Getter
@Setter
@ToString
public class HttpClientPoolProperties {
    /**
     * 连接池的最大连接数量
     */
    private int maxTotalConnect = 200;

    /**
     * 同路由的并发数
     */
    private int maxPreRoute = 100;

    /**
     * 连接的超时时间
     */
    private int connectTimeout = 30000;

    /**
     * 读取的超时时间
     */
    private int readTimeout = 30000;
    /**
     * 默认使用的字符编码
     */
    private String charset = "UTF-8";

    /**
     * 默认的重试次数
     */
    private int retryTimes = 2;

    /**
     * 从连接池中获取连接的超时时间; 单位: ms, 这里的时间不能设的太长
     */
    private int connectionRequestTimeout = 100;

    /**
     * 针对不同主机, 设置不同的长连接保持时间
     */
    private Map<String, Integer> keepAliveTargetHost;

    /**
     * 针对不同地址, 设置不同长连接的保持时间
     */
    private int keepAliveTime = 60;

    /**
     * 是否开启守护线程, 默认不开启;
     */
    private Boolean startDeamonThread = true;

    /**
     * 不活跃的线程回收的时长, 默认30秒
     */
    private int inactionThreadTime = 30;

    private boolean ignoreSSL; // 是否忽略证书检查

}
